#ifndef OBJECT_H
#define OBJECT_H

#include "SFML\System.hpp"
#include "SFML\Graphics.hpp"


extern float backgroundSpeed;

class Object
{
protected:
	Object();
	virtual ~Object(); // Note virtual destructor because of virtual methods
	friend class Factory;

	// Abstract virtual functions, these make the class abstract....the object can not actually be made
	virtual void Render() = 0;
	virtual void Update() = 0;
	virtual void Animation(sf::Sprite &sprite, const float &x1, const float &y1, const float &x2, const float &y2);
	//virtual void SetAnimFrame();

	int SpriteCells;
	int AnimationLength;

public:
	sf::Vector2f position;

	enum ObjectType { Player, Boulder, Log };
	ObjectType thisType;

	sf::FloatRect r;
};

#endif